home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / tclMotif-1.4 / send / programs / xmSend.c < prev    next >
C/C++ Source or Header  |  1995-06-29  |  2KB  |  76 lines

  1. /*
  2.  * A Motif program to send and receive messages to and from a Tk program
  3.  * The Tk program is tkSend, and this one is called xmSend
  4.  */
  5.  
  6. #include <Xm/PushB.h>
  7. #include "../tclXtSend.h"
  8.  
  9. void
  10. SendTo(w, clientData, callData)
  11.     Widget w;
  12.     XtPointer clientData;
  13.     XtPointer callData;
  14. {
  15.     Tcl_Interp *interp = (Tcl_Interp *) clientData;
  16.     char sendCommand[1024];
  17.  
  18.     strcpy(sendCommand,
  19.         "send tkSend {.button configure -text \"Hello from Motif\"}");
  20.     if (Tcl_Eval(interp, sendCommand) != TCL_OK)
  21.     fprintf(stderr, "send failed\n");
  22. }
  23.  
  24. int
  25. SetLabel(clientData, interp, argc, argv)
  26.     ClientData *clientData;
  27.     Tcl_Interp *interp;
  28.     int argc;
  29.     char **argv;
  30. {
  31.     XmString xmstr;
  32.     Widget w = (Widget) clientData;
  33.  
  34.     if (argc < 2) {
  35.     Tcl_SetResult(interp, "setLabel label", TCL_STATIC);
  36.     return TCL_ERROR;
  37.     }
  38.  
  39.     xmstr = XmStringCreateLocalized(argv[1]);
  40.     XtVaSetValues(w, XmNlabelString, xmstr, NULL);
  41.     XmStringFree(xmstr);
  42.  
  43.     return TCL_OK;
  44. }
  45.  
  46.  
  47. int
  48. main(argc, argv)
  49.     int argc;
  50.     char **argv;
  51. {
  52.     Widget toplevel;
  53.     Widget button;
  54.     Tcl_Interp *interp;
  55.     XtAppContext app;
  56.  
  57.     toplevel = XtAppInitialize(&app, "XmSend", NULL, 0, &argc, argv,
  58.                 NULL, NULL, 0);
  59.  
  60.     button = XmCreatePushButton(toplevel, "I'm an Xm button", NULL, 0);
  61.     XtManageChild(button);
  62.  
  63.     XtRealizeWidget(toplevel);
  64.  
  65.     interp = Tcl_CreateInterp();
  66.  
  67.     if (TclXtSend_RegisterInterp(interp, argv[0], toplevel) == TCL_ERROR)
  68.     fprintf(stderr, "couldn't register interpreter %s\n", argv[0]);
  69.  
  70.     Tcl_CreateCommand(interp, "setLabel", SetLabel, (ClientData *) button,
  71.         (Tcl_CmdDeleteProc *) NULL);
  72.     XtAddCallback(button, XmNactivateCallback, SendTo, (XtPointer) interp);
  73.  
  74.     XtAppMainLoop(app);
  75. }
  76.